Angular Material এর MatExpansionPanel কম্পোনেন্টটি একটি ইন্টারেকটিভ এবং কাস্টমাইজযোগ্য উপাদান, যা একাধিক সেকশন বা প্যানেল থাকা অবস্থায় শুধুমাত্র একটি প্যানেল প্রদর্শিত রাখে, অন্যগুলো লুকানো থাকে। এটি সাধারণত FAQ (Frequently Asked Questions), অ্যাকর্ডিয়ন স্টাইলের মেনু, বা অন্যান্য সেকশন ভিত্তিক কন্টেন্ট প্রদর্শনে ব্যবহৃত হয়।
এটি ডায়নামিক ভাবে প্যানেল খুলতে এবং বন্ধ করতে সক্ষম এবং ব্যবহারকারীর জন্য একটি পরিষ্কার এবং সজ্জিত লেআউট তৈরি করে।
MatExpansionModule ব্যবহার করতে আপনাকে এটি আপনার অ্যাপ্লিকেশনের app.module.ts ফাইলে ইমপোর্ট করতে হবে:
import { MatExpansionModule } from '@angular/material/expansion';
@NgModule({
imports: [
MatExpansionModule
]
})
export class AppModule {}
এখন, HTML টেমপ্লেটে MatExpansionPanel কম্পোনেন্ট ব্যবহার করা যেতে পারে। এক্সপ্যানশন প্যানেল সাধারণত একটি <mat-expansion-panel>
ট্যাগের মধ্যে থাকে এবং এতে বিভিন্ন সেকশন থাকে।
<mat-accordion>
<mat-expansion-panel>
<mat-expansion-panel-header>
<mat-panel-title>
Panel 1
</mat-panel-title>
</mat-expansion-panel-header>
<p>Content for panel 1.</p>
</mat-expansion-panel>
<mat-expansion-panel>
<mat-expansion-panel-header>
<mat-panel-title>
Panel 2
</mat-panel-title>
</mat-expansion-panel-header>
<p>Content for panel 2.</p>
</mat-expansion-panel>
</mat-accordion>
<mat-expansion-panel>
: এক্সপ্যানশন প্যানেল তৈরি করার জন্য ব্যবহৃত উপাদান।<mat-expansion-panel-header>
: এক্সপ্যানেলটির শিরোনাম, যা ক্লিকযোগ্য হয়ে প্যানেলটিকে খুলবে বা বন্ধ করবে।<mat-panel-title>
: প্যানেলটির শিরোনাম টেক্সট।এখানে দুটি এক্সপ্যানশন প্যানেল আছে এবং প্রত্যেকটি পৃথক কনটেন্ট ধারণ করে।
আপনি এক্সপ্যানশন প্যানেলের ভিতরে কনটেন্টের স্টাইল এবং প্যানেল কনটেন্টের ব্যাকগ্রাউন্ড পরিবর্তন করতে CSS ব্যবহার করতে পারেন:
mat-expansion-panel {
background-color: #f5f5f5;
}
mat-expansion-panel-header {
background-color: #00796b;
color: white;
}
mat-panel-title {
font-size: 18px;
}
এটি প্যানেলটির শিরোনাম এবং কনটেন্টের ব্যাকগ্রাউন্ড রঙ এবং টেক্সট স্টাইল কাস্টমাইজ করবে।
Angular Material এর MatExpansionPanel আপনাকে প্রোগ্রামেটিকালি প্যানেল ওপেন বা ক্লোজ করার সুযোগ দেয়। এর জন্য আপনি [expanded] প্রপার্টি ব্যবহার করতে পারেন, যা প্যানেলটি যদি খোলা থাকে তখন true
থাকবে এবং যদি বন্ধ থাকে তাহলে false
থাকবে।
<mat-expansion-panel [expanded]="isPanelExpanded">
<mat-expansion-panel-header>
<mat-panel-title>
Expandable Panel
</mat-panel-title>
</mat-expansion-panel-header>
<p>Panel Content</p>
</mat-expansion-panel>
export class AppComponent {
isPanelExpanded = true; // প্যানেলটি ডিফল্টভাবে ওপেন থাকবে
togglePanel() {
this.isPanelExpanded = !this.isPanelExpanded; // প্যানেলটি খুলতে বা বন্ধ করতে
}
}
এখানে isPanelExpanded
একটি ভেরিয়েবল যেটি প্যানেলের এক্সপান্ডেড (খোলা) অবস্থান নির্ধারণ করে। আপনি এটি টগল করতে পারবেন togglePanel()
ফাংশনের মাধ্যমে।
ডিফল্টভাবে mat-accordion এর মধ্যে থাকা প্যানেলগুলির মধ্যে একাধিক প্যানেল একসাথে খোলা থাকতে পারে। তবে, আপনি যদি চান যে একটি সময় কেবল একটিই প্যানেল খোলা থাকে, তাহলে multi="false" প্রপার্টি যোগ করতে পারেন।
<mat-accordion multi="false">
<mat-expansion-panel>
<mat-expansion-panel-header>
<mat-panel-title>
Panel 1
</mat-panel-title>
</mat-expansion-panel-header>
<p>Content for panel 1.</p>
</mat-expansion-panel>
<mat-expansion-panel>
<mat-expansion-panel-header>
<mat-panel-title>
Panel 2
</mat-panel-title>
</mat-expansion-panel-header>
<p>Content for panel 2.</p>
</mat-expansion-panel>
</mat-accordion>
এতে শুধুমাত্র একটি প্যানেল খুলে থাকবে, বাকি প্যানেলগুলি বন্ধ থাকবে।
আপনি এক্সপ্যানশন প্যানেলে আইকনও যুক্ত করতে পারেন, যেমন প্যানেল খোলার আগে বা পরে একটি আইকন প্রদর্শন করা।
<mat-expansion-panel>
<mat-expansion-panel-header>
<mat-panel-title>
Panel with Icon
</mat-panel-title>
<mat-icon>expand_more</mat-icon>
</mat-expansion-panel-header>
<p>Content with icon</p>
</mat-expansion-panel>
এখানে <mat-icon>
ব্যবহার করে একটি আইকন যোগ করা হয়েছে, যা প্যানেল খোলার আগে প্রদর্শিত হবে।
Angular Material Expansion Panel একটি শক্তিশালী এবং কাস্টমাইজযোগ্য কম্পোনেন্ট যা সহজেই ডায়নামিক কনটেন্ট শো/হাইড করতে ব্যবহৃত হয়। এটি FAQ, মেনু সেকশন, বা অন্যান্য কনটেন্ট প্রদর্শনের জন্য উপযুক্ত। আপনি এক্সপ্যান্ড করা প্যানেল কন্ট্রোল, আইকন কাস্টমাইজেশন, স্টাইলিং, এবং ডায়নামিক কন্টেন্ট ব্যবস্থাপনা সহ বিভিন্ন ফিচার ব্যবহার করে প্যানেল কাস্টমাইজ করতে পারেন।
Angular Material এর Accordion কম্পোনেন্ট ব্যবহার করে আপনি কোলাপসিবল প্যানেল তৈরি করতে পারেন, যা ব্যবহারকারীদের জন্য একাধিক প্যানেল একসাথে দেখানোর এবং তাদের চাহিদা অনুযায়ী কোলাপস বা এক্সপ্যান্ড (Collapse/Expand) করার সুযোগ প্রদান করে। এটি সাধারণত FAQ সেকশন বা অন্যান্য জায়গায় ব্যবহার করা হয়, যেখানে একাধিক কন্টেন্টকে একসাথে সুশৃঙ্খলভাবে প্রদর্শন করা হয়।
Angular Material এর MatAccordion এবং MatExpansionPanel কম্পোনেন্টের মাধ্যমে কোলাপসিবল প্যানেল তৈরি করা যায়।
প্রথমে, MatExpansionModule মডিউলটি আপনার অ্যাপ্লিকেশনে ইমপোর্ট করতে হবে।
আপনার app.module.ts ফাইলে MatExpansionModule ইমপোর্ট করুন:
import { MatExpansionModule } from '@angular/material/expansion';
@NgModule({
imports: [
MatExpansionModule
]
})
export class AppModule { }
এখন MatAccordion এবং MatExpansionPanel ব্যবহার করে একটি কোলাপসিবল প্যানেল তৈরি করবো।
<mat-accordion>
<mat-expansion-panel>
<mat-expansion-panel-header>
<mat-panel-title>
Panel 1
</mat-panel-title>
<mat-panel-description>
This is the first panel
</mat-panel-description>
</mat-expansion-panel-header>
<p>This is the content of panel 1.</p>
</mat-expansion-panel>
<mat-expansion-panel>
<mat-expansion-panel-header>
<mat-panel-title>
Panel 2
</mat-panel-title>
<mat-panel-description>
This is the second panel
</mat-panel-description>
</mat-expansion-panel-header>
<p>This is the content of panel 2.</p>
</mat-expansion-panel>
<mat-expansion-panel>
<mat-expansion-panel-header>
<mat-panel-title>
Panel 3
</mat-panel-title>
<mat-panel-description>
This is the third panel
</mat-panel-description>
</mat-expansion-panel-header>
<p>This is the content of panel 3.</p>
</mat-expansion-panel>
</mat-accordion>
এখানে:
আপনি expanded প্রপার্টি ব্যবহার করে প্যানেলের এক্সপ্যান্ড/কোলাপস নিয়ন্ত্রণ করতে পারেন।
<mat-accordion>
<mat-expansion-panel [expanded]="panel1Expanded">
<mat-expansion-panel-header>
<mat-panel-title>
Panel 1
</mat-panel-title>
</mat-expansion-panel-header>
<p>This is the content of panel 1.</p>
</mat-expansion-panel>
<mat-expansion-panel>
<mat-expansion-panel-header>
<mat-panel-title>
Panel 2
</mat-panel-title>
</mat-expansion-panel-header>
<p>This is the content of panel 2.</p>
</mat-expansion-panel>
</mat-accordion>
export class AppComponent {
panel1Expanded = true; // প্রথম প্যানেল ডিফল্টভাবে এক্সপ্যান্ড থাকবে
}
এখানে, panel1Expanded
ভেরিয়েবলটি ব্যবহার করা হয়েছে, যার মাধ্যমে আপনি প্যানেল ১ এর এক্সপ্যান্ড বা কোলাপস করার আচরণ নিয়ন্ত্রণ করতে পারবেন।
ডিফল্টভাবে, Angular Material Accordion শুধুমাত্র একটি প্যানেল একসাথে এক্সপ্যান্ড হতে দেয়। তবে আপনি চাইলে সব প্যানেল একসাথে এক্সপ্যান্ড বা কোলাপস করতে পারবেন।
<mat-accordion multi="true">
<mat-expansion-panel>
<mat-expansion-panel-header>
<mat-panel-title>
Panel 1
</mat-panel-title>
</mat-expansion-panel-header>
<p>This is the content of panel 1.</p>
</mat-expansion-panel>
<mat-expansion-panel>
<mat-expansion-panel-header>
<mat-panel-title>
Panel 2
</mat-panel-title>
</mat-expansion-panel-header>
<p>This is the content of panel 2.</p>
</mat-expansion-panel>
</mat-accordion>
এখানে multi="true"
অ্যাট্রিবিউট ব্যবহার করা হয়েছে, যার মাধ্যমে একাধিক প্যানেল একসাথে এক্সপ্যান্ড হতে পারে।
Angular Material ডিফল্ট স্টাইলিং প্রদান করে, তবে আপনি চাইলে কাস্টম স্টাইলও করতে পারেন। উদাহরণস্বরূপ, আপনি প্যানেলের শিরোনাম বা কন্টেন্টের ফন্ট, রং ইত্যাদি পরিবর্তন করতে পারেন।
mat-expansion-panel {
margin-bottom: 10px;
}
mat-expansion-panel-header {
background-color: #f1f1f1;
}
mat-panel-title {
font-weight: bold;
}
এখানে, আমরা প্যানেলের মাঝে স্পেস (margin) যোগ করেছি এবং শিরোনামের ব্যাকগ্রাউন্ড রঙ পরিবর্তন করেছি।
Angular Material Accordion কম্পোনেন্ট ব্যবহার করে কোলাপসিবল প্যানেল তৈরি করা খুবই সহজ এবং কার্যকরী। এটি বিশেষত FAQ সেকশন, ডাইনামিক কনটেন্ট লোডিং, এবং যেকোনো জায়গায় যেখানে একাধিক অপশন বা কন্টেন্ট সুশৃঙ্খলভাবে উপস্থাপন করা দরকার, সেখানে ব্যবহার করা যায়। Angular Material এর সাহায্যে আপনি কাস্টম স্টাইলিং, এক্সপ্যান্ড/কোলাপস নিয়ন্ত্রণ এবং একাধিক প্যানেল একসাথে এক্সপ্যান্ড করার সুবিধা পেতে পারেন।
Angular Material এর Expansion Panel কম্পোনেন্টটি একটি খুবই ব্যবহারযোগ্য উপাদান, যা আপনি কোন কন্টেন্ট অথবা ইনফরমেশন গ্রুপকে এক্সপ্যান্ড বা কোলাপ্স (expand or collapse) করতে ব্যবহার করতে পারেন। এক্সপ্যানশন প্যানেল গ্রুপিং (Expansion Panel Grouping) ব্যবহার করে আপনি একাধিক এক্সপ্যানশন প্যানেলকে একটি গ্রুপে রাখতে পারেন, যেখানে একাধিক প্যানেল একসাথে এক্সপ্যান্ড বা কোলাপ্স করা যায়।
এখানে, আমরা দেখব কিভাবে Angular Material Expansion Panel গ্রুপিং করা যায় এবং এর কার্যপ্রণালী কিভাবে কাজ করে।
প্রথমে, আপনাকে MatExpansionModule ইমপোর্ট করতে হবে।
app.module.ts ফাইলে MatExpansionModule ইমপোর্ট করুন:
import { MatExpansionModule } from '@angular/material/expansion';
import { MatButtonModule } from '@angular/material/button';
@NgModule({
imports: [
MatExpansionModule,
MatButtonModule
]
})
export class AppModule { }
এখন, mat-expansion-panel ব্যবহার করে একাধিক প্যানেলকে একটি গ্রুপে রাখা হবে, যেখানে একসাথে একাধিক প্যানেল এক্সপ্যান্ড বা কোলাপ্স করা যাবে।
এখানে, আমরা একাধিক এক্সপ্যানশন প্যানেল ব্যবহার করেছি, এবং একটি mat-accordion ব্যবহার করে প্যানেলগুলোকে গ্রুপ করা হয়েছে।
<mat-accordion>
<mat-expansion-panel [expanded]="isExpanded1">
<mat-expansion-panel-header>
<mat-panel-title>
Panel 1
</mat-panel-title>
</mat-expansion-panel-header>
<p>Content for Panel 1</p>
<button mat-button (click)="togglePanel(1)">Toggle Panel 1</button>
</mat-expansion-panel>
<mat-expansion-panel [expanded]="isExpanded2">
<mat-expansion-panel-header>
<mat-panel-title>
Panel 2
</mat-panel-title>
</mat-expansion-panel-header>
<p>Content for Panel 2</p>
<button mat-button (click)="togglePanel(2)">Toggle Panel 2</button>
</mat-expansion-panel>
<mat-expansion-panel [expanded]="isExpanded3">
<mat-expansion-panel-header>
<mat-panel-title>
Panel 3
</mat-panel-title>
</mat-expansion-panel-header>
<p>Content for Panel 3</p>
<button mat-button (click)="togglePanel(3)">Toggle Panel 3</button>
</mat-expansion-panel>
</mat-accordion>
এখানে:
এখন, togglePanel() ফাংশনটি তৈরি করতে হবে যা প্যানেলগুলোর এক্সপ্যান্ড স্টেট পরিবর্তন করবে। এই ফাংশনটি প্যানেল নং অনুযায়ী স্টেট চেক করবে এবং সেই অনুযায়ী এক্সপ্যান্ড/কোলাপ্স করবে।
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
isExpanded1: boolean = false;
isExpanded2: boolean = false;
isExpanded3: boolean = false;
togglePanel(panelNumber: number) {
switch (panelNumber) {
case 1:
this.isExpanded1 = !this.isExpanded1;
break;
case 2:
this.isExpanded2 = !this.isExpanded2;
break;
case 3:
this.isExpanded3 = !this.isExpanded3;
break;
}
}
}
এখানে:
আপনি চাইলে একসাথে একাধিক প্যানেল এক্সপ্যান্ড বা কোলাপ্স করার জন্য একটি ফাংশন ব্যবহার করতে পারেন।
expandAllPanels() {
this.isExpanded1 = true;
this.isExpanded2 = true;
this.isExpanded3 = true;
}
collapseAllPanels() {
this.isExpanded1 = false;
this.isExpanded2 = false;
this.isExpanded3 = false;
}
এটি expandAllPanels()
এবং collapseAllPanels()
ফাংশন তৈরি করবে, যা একসাথে সমস্ত প্যানেল এক্সপ্যান্ড বা কোলাপ্স করতে সাহায্য করবে।
আপনি এই ফাংশনগুলিকে একটি বাটনের সাথে সংযুক্ত করতে পারেন:
<button mat-button (click)="expandAllPanels()">Expand All</button>
<button mat-button (click)="collapseAllPanels()">Collapse All</button>
Angular Material এক্সপ্যানশন প্যানেলের জন্য ডিফল্ট স্টাইলিং প্রদান করে, তবে আপনি কাস্টম CSS ব্যবহার করে প্যানেল এবং এর কনটেন্ট কাস্টমাইজ করতে পারেন।
mat-expansion-panel {
margin: 10px 0;
}
mat-panel-title {
font-weight: bold;
}
mat-expansion-panel-header {
background-color: #f1f1f1;
}
এখানে, mat-expansion-panel এর জন্য মার্জিন, mat-panel-title এর জন্য ফন্ট ওয়েট এবং mat-expansion-panel-header এর ব্যাকগ্রাউন্ড কাস্টমাইজ করা হয়েছে।
Angular Material Expansion Panel এবং Accordion কম্পোনেন্টগুলি ব্যবহার করে আপনি সহজেই একাধিক প্যানেল তৈরি করতে পারেন এবং তাদের মধ্যে এক্সপ্যান্ড/কোলাপ্স করার ফিচার যোগ করতে পারেন। mat-accordion এর সাহায্যে আপনি একসাথে একাধিক প্যানেল গ্রুপ করতে পারেন এবং [expanded] প্রপার্টি ব্যবহার করে প্যানেলের এক্সপ্যান্ড স্টেট কন্ট্রোল করতে পারেন। এটি ব্যবহারকারীদের জন্য একটি ইন্টারঅ্যাকটিভ এবং কার্যকরী ইউজার ইন্টারফেস তৈরি করতে সাহায্য করে।
Angular Material এর <mat-expansion-panel>
কম্পোনেন্টটি ব্যবহারকারীদের জন্য একটি খুব কার্যকরী UI উপাদান, যা ট্যাবের মতো কাজ করে। এটি সাধারণত কনটেন্ট বা ফর্মের বিভিন্ন অংশ একসাথে আড়াল করতে বা প্রদর্শন করতে ব্যবহৃত হয়। এটি এক্সপ্যান্ডেবল এবং কোল্লাপসেবল কনটেন্ট ব্লক তৈরি করতে সাহায্য করে, যা বিশেষভাবে যখন অনেক কনটেন্ট একসাথে দেখানো হয়, তখন খুব কার্যকরী।
এখানে আমরা দেখবো কিভাবে Angular Material Expansion Panel ব্যবহার করে ফর্মের বিভিন্ন অংশ বা ইনপুট ফিল্ডগুলো প্রদর্শন এবং আড়াল করতে পারি।
প্রথমে, আপনাকে MatExpansionModule এবং ReactiveFormsModule ইমপোর্ট করতে হবে।
import { MatExpansionModule } from '@angular/material/expansion';
import { ReactiveFormsModule } from '@angular/forms';
@NgModule({
imports: [
MatExpansionModule,
ReactiveFormsModule
]
})
export class AppModule { }
এখন, আমরা mat-expansion-panel
কম্পোনেন্ট ব্যবহার করে ফর্মের ইনপুট ফিল্ডগুলো একটি এক্সপ্যানশন প্যানেলে রাখব। যখন ব্যবহারকারী প্যানেল এক্সপ্যান্ড করবেন, তখন ফর্মের ফিল্ডগুলো দেখা যাবে এবং যখন কোলাপ্স হবে, তখন ফিল্ডগুলো আড়াল হয়ে যাবে।
<mat-accordion>
<mat-expansion-panel [expanded]="isExpanded" (expandedChange)="onExpansionChange($event)">
<mat-expansion-panel-header>
<mat-panel-title>
Personal Information
</mat-panel-title>
</mat-expansion-panel-header>
<form [formGroup]="form">
<mat-form-field>
<mat-label>Name</mat-label>
<input matInput formControlName="name" required>
</mat-form-field>
<mat-form-field>
<mat-label>Email</mat-label>
<input matInput formControlName="email" required>
</mat-form-field>
<mat-form-field>
<mat-label>Phone</mat-label>
<input matInput formControlName="phone">
</mat-form-field>
</form>
</mat-expansion-panel>
</mat-accordion>
এখানে:
এখন, টাইপস্ক্রিপ্ট ফাইলে ফর্মের জন্য একটি FormGroup
তৈরি করতে হবে এবং expanded
প্রপার্টি ব্যবহার করে এক্সপ্যানশন প্যানেলের অবস্থান নিয়ন্ত্রণ করতে হবে।
import { Component, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
form: FormGroup;
isExpanded: boolean = true;
constructor(private fb: FormBuilder) {}
ngOnInit() {
this.form = this.fb.group({
name: ['', Validators.required],
email: ['', [Validators.required, Validators.email]],
phone: ['']
});
}
onExpansionChange(event: boolean) {
console.log("Panel expanded:", event);
}
}
এখানে:
mat-expansion-panel এর কিছু সাধারণ স্টাইল কাস্টমাইজেশন করা যায়। যেমন, আপনি প্যানেলের ব্যাকগ্রাউন্ড রঙ, প্যাডিং, অথবা শ্যাডো পরিবর্তন করতে পারেন।
mat-expansion-panel {
margin-bottom: 15px;
background-color: #f1f1f1;
}
mat-expansion-panel-header {
background-color: #007bff;
color: white;
}
mat-form-field {
width: 100%;
}
এখানে:
একাধিক এক্সপ্যানশন প্যানেল তৈরি করার জন্য, আপনি mat-accordion ব্যবহার করতে পারেন, যা সব প্যানেল একসাথে গ্রুপ করে রাখবে।
<mat-accordion>
<mat-expansion-panel>
<mat-expansion-panel-header>
<mat-panel-title>
Section 1
</mat-panel-title>
</mat-expansion-panel-header>
<p>Content for Section 1</p>
</mat-expansion-panel>
<mat-expansion-panel>
<mat-expansion-panel-header>
<mat-panel-title>
Section 2
</mat-panel-title>
</mat-expansion-panel-header>
<p>Content for Section 2</p>
</mat-expansion-panel>
</mat-accordion>
এখানে, mat-accordion ব্যবহার করে একাধিক এক্সপ্যানশন প্যানেল তৈরি করা হয়েছে। একবারে একটি প্যানেল এক্সপ্যান্ড হবে এবং অন্যটি কোলাপ্স হবে।
Angular Material Expansion Panel ফর্মের সাথে ব্যবহার করে আপনি একটি অত্যন্ত কার্যকরী এবং ইন্টারঅ্যাকটিভ ইউজার ইন্টারফেস তৈরি করতে পারেন। এক্সপ্যানশন প্যানেল ব্যবহারকারীদের জন্য অতিরিক্ত কনটেন্ট বা ইনপুট ফিল্ডগুলো আড়াল বা প্রদর্শন করার সুবিধা প্রদান করে, যা অ্যাপ্লিকেশনের ক্লিন এবং সুশৃঙ্খল ডিজাইনের জন্য অত্যন্ত উপকারী। Angular Material এর এক্সপ্যানশন প্যানেল সহজেই কাস্টমাইজ এবং স্টাইল করা যায়, যা আপনার অ্যাপ্লিকেশনের জন্য আরো ইন্টারঅ্যাকটিভ এবং ইউজার-বান্ধব অভিজ্ঞতা তৈরি করে।
Read more